package main 

import (
	"fmt"
 	 "sort"
	"math/rand"
)
// 声明一个hero结构体
type Hero struct{
	Name string
	Age int
}

type HeroSlice []Hero

// 实现接口
func (hs HeroSlice) Len() int{
	return len(hs)
}

func (hs HeroSlice) Less(i,j int) bool{
	return hs[i].Age>hs[j].Age
}
func (hs HeroSlice) Swap(i,j int){
	// temp :=hs[i]
	// hs[i]=hs[j]
	// hs[j]=temp
	hs[j],hs[i]=hs[i],hs[j]
}

func main(){
	var heros HeroSlice
	for i:=0;i<10;i++{
		hero := Hero{
			Name:fmt.Sprintf("英雄%~d",rand.Intn(100)),
			Age:rand.Intn(100),
		}

		heros=append(heros,hero)

	}
	// 查看排序前的顺序
	// for _,v :=range heros{
	// 	fmt.Println(v)
	// }
	sort.Sort(heros)
	// fmt.Println("-------------------------")
	for _,v :=range heros{
		fmt.Println(v)
	}
}



// type student struct{
// 	score int
// }
// type StudentSlice []student


// func (ss StudentSlice) Len() int {
// 	return len(ss)
// }

// func (ss StudentSlice) Less(i,j int) bool{
// 	return ss[i].score<ss[j].score
// }

// func (ss StudentSlice)  Swap(i, j int){
// 	ss[i],ss[j]=ss[j],ss[i]
// }

// func main(){
// 	var ss StudentSlice
// 	i:=0
// 	for {
// 		s :=student{
// 			rand.Intn(100),
// 		}
// 		ss=append(ss,s)
// 		i++
// 		if i==10{
// 			break
// 		}
// 	} 
// 	fmt.Println(ss)
// 	sort.Sort(ss)
// 	fmt.Println(ss)
// }